﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MoroMoro.Samples.ToDoList.Presentation.Views
{
    /// <summary>
    /// ビューを表します。
    /// </summary>
    public interface IView
    {
        /// <summary>
        /// ビューがロードされると発生します。
        /// </summary>
        event EventHandler Load;

        /// <summary>
        /// ビューが閉じるときに発生します。
        /// </summary>
        event CancelEventHandler Closing;


        /// <summary>
        /// 情報メッセージボックスを表示します。
        /// </summary>
        /// <param name="text">テキスト。</param>
        void ShowInfoMessageBox(string text);

        /// <summary>
        /// 警告メッセージボックスを表示します。
        /// </summary>
        /// <param name="text">テキスト。</param>
        void ShowWarningMessageBox(string text);

        /// <summary>
        /// エラーメッセージボックスを表示します。
        /// </summary>
        /// <param name="text">テキスト。</param>
        void ShowErrorMessageBox(string text);

        /// <summary>
        /// OK/Cancel メッセージボックスを表示します。
        /// </summary>
        /// <param name="text">テキスト。</param>
        /// <param name="defaultButton">既定で選択されるボタン。</param>
        /// <returns>メッセージボックスの戻り値。</returns>
        DialogResult ShowOkCancelMessageBox(string text, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button2);

        /// <summary>
        /// Yes/No メッセージボックスを表示します。
        /// </summary>
        /// <param name="text">テキスト。</param>
        /// <param name="defaultButton">既定で選択されるボタン。</param>
        /// <returns>メッセージボックスの戻り値。</returns>
        DialogResult ShowYesNoMessageBox(string text, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button2);

        /// <summary>
        /// エラーメッセージボックスを表示します。
        /// </summary>
        /// <param name="text">テキスト。</param>
        /// <param name="caption">タイトル。</param>
        /// <param name="buttons">表示するボタン。</param>
        /// <param name="icon">表示するアイコン。</param>
        /// <param name="defaultButton">既定で選択されるボタン。</param>
        /// <returns>メッセージボックスの戻り値。</returns>
        DialogResult ShowMessageBox(string text, string caption = "", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxIcon icon = MessageBoxIcon.None, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1);
    }
}
